package com.wjm.api.homework;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.lang.reflect.Method;
import java.util.Properties;

/**
 * Data:2022年08月01日
 * Author:wjm
 * Content: Reflect反射机制（配置文件的应用）
 *
 *
 *  题目:
 *       完成工具类的撰写，在不改变工具类的任何代码的情况下，创建任意类对象，并执行其方法
 *
 *  思路：
 *       将需要经常改动的变量写在配置文件中，这样子我们需要修改的时候就不需要频繁的去改代码，只需要更改配置文件中的变量即可。
 *
 *  使用场景：
 *        框架
 *
 */
public class HomeWork3 {
    public static void main(String[] args) throws Exception {
        //创建Properties(配置工具)对象
        Properties properties = new Properties();

        //创建字符输入流
        FileReader reader = new FileReader("./Java-API-Reflect/src/com/wjm/api/homework/homework3.properties");
        //加载配置文件
        properties.load(reader);

        //通过健获取属性值
        String className = properties.getProperty("className");
        String method = properties.getProperty("method");
        System.out.println(className+","+method);

        //通过类的全类名，获取类对象
        Class c = Class.forName(className);

        //通过类对象，创建对象
        Object obj  = c.newInstance();

        //获取指定名称的方法
        Method method1 = c.getMethod(method);

        //执行方法
        method1.invoke(obj);

        //关闭流连接
        reader.close();



    }
}
